package com.yuntsg.nnsfcp.service.front;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yuntsg.nnsfcp.front.entity.OrderBaseInfo;
import com.yuntsg.nnsfcp.service.front.pojo.OrderFileList;
import com.yuntsg.nnsfcp.service.front.pojo.QueryScopeDetail;
import com.yuntsg.nnsfcp.service.front.pojo.ReturnOrderStatus;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 委托单接口
 *
 * @author ：ljx
 * @date ：Created in 2019/5/31
 */
public interface OrderService {
    /**
     * 生成 查收,新,引各自的编号 2019360YZH0200***
     *
     * @param orderBaseInfo
     * @return
     */
    public abstract String setProjectNo(OrderBaseInfo orderBaseInfo);

    /**
     * 生成委托单编号
     *
     * @return
     */
    public abstract String setApplyId();

    /**
     * 修改委托单
     *
     * @param orderBaseInfo 订单实体
     * @return
     */
    public abstract Integer updateById2(HttpServletRequest request, OrderBaseInfo orderBaseInfo);

    /**
     * 首页查询
     * 根据手机号, 申请号分页查询.
     *
     * @param page       当前页
     * @param rows       每页多少个
     * @param conditions 手机号/申请号
     * @return 分页+数据
     */
    public abstract Object findByConditions(Integer page, Integer rows, String conditions);

    /**
     * 创建委托单,生成订单号. 判断用户是否有未完成的订单
     *
     * @param orderBaseInfo 订单
     * @return
     */
    public abstract Object createOrder(HttpServletRequest request, OrderBaseInfo orderBaseInfo);

    /**
     * 根据订单查询订单的状态
     *
     * @param orderId 订单id
     * @return
     */
    public abstract List<ReturnOrderStatus> getOrderStatus(Integer orderId);

    /**
     * 查询用户下所有委托单
     *
     * @param page   当前页
     * @param rows   没也多少个
     * @param userId 用户id
     * @param type   订单类型
     * @return
     */
    public abstract IPage<OrderBaseInfo> findByUserId(HttpServletRequest request, Integer page, Integer rows, Integer userId, Integer type);

    /**
     * 发送短信,通知接单员
     *
     * @param orderBaseInfo 订单实体类
     */
    public abstract void sendMessageByJdy(OrderBaseInfo orderBaseInfo);

    /**
     * 委托单 - 解析检索范围页 用户勾选的值
     *
     * @param orderBaseInfo 订单实体
     * @return
     */
    public QueryScopeDetail queryScopeMap(OrderBaseInfo orderBaseInfo);

    /**
     * 获取订单下上传的所有文件.
     *
     * @param orderBaseInfo
     * @return
     */
    public List<OrderFileList> getUserUpload(OrderBaseInfo orderBaseInfo);


}
